20250507
1.MATLAB使用table函數和writetable函數將數據導出Excel表格文件
我們以高斯函數為例子,高斯函數在數學和工程領域有著廣泛的應用,它的一般形式為:
其中是均值,決定了函數的中心位置;
?是標準差,決定了函數的寬度。
函數名 | 作用 | 示例 |
table | 創建表格對象 | T = table(col1, col2, ...) |
writetable | 將表格寫入文件(Excel/CSV等) | writetable(T, 'file.xlsx') |
fullfile | 跨平臺拼接文件路徑 | fullfile('folder', 'file') |
exist | 檢查文件/文件夾是否存在 | exist('path', 'dir') |
mkdir | 創建新文件夾 | mkdir('new_folder') |
uigetdir | 交互式選擇文件夾路徑 | folder = uigetdir() |
(1)創建表格:使用table函數將x和y數組組合成一個表格對象dataTable,并為兩列數據指定列名Wavelength和Reflectivity。
(2)導出表格到 Excel:使用writetable函數將表格對象dataTable導出為名為SFBG_Reflectivity.xlsx的 Excel 文件。
clc
clear
close all
% 設置參數
mu = 0; % 均值
sigma = 1; % 標準差
% 生成x值
x = linspace(-5, 5, 1000);
% 計算對應的y值
y = gaussian(x, mu, sigma);
% 繪制高斯函數圖像
figure;
plot(x, y, 'b', 'LineWidth', 2);
title(['高斯函數: \mu = ', num2str(mu), ', \sigma = ', num2str(sigma)]);
xlabel('x');
ylabel('f(x)');
grid on;
% 導出數據到Excel表格
dataTable = table(x',y','VariableNames',{'x值','y值'});
% 指定導出文件的路徑
output_folder = 'C:\Users\53609\Desktop\Test\20250507_Test_data\導出數據';
% 確保輸出文件夾存在,如果不存在則創建
if ~exist(output_folder,'dir')mkdir(output_folder); %創建文件夾
end
output_filename = fullfile(output_folder, '高斯函數據.xlsx'); % 創建完整的數據路徑
% 保存為新的Excel文件
writetable(dataTable, output_filename);
disp('MATLAB導出完成')
% 定義高斯函數
function y = gaussian(x, mu, sigma)y = (1 / (sigma * sqrt(2 * pi))) * exp(-((x - mu).^2) / (2 * sigma^2));
end
運行代碼后,會在當前工作目錄下生成一個Excel文件,其中包含兩列數據,第一列是x,第二列是y。
2、MATLAB實現readtable函數實現Excel表格數據的導入
函數名 | 作用 | 示例 |
readtable | 將 Excel 數據讀取為表格 | data = readtable('data.xlsx', 'Sheet', 'Sheet1', 'Range', 'A1:D10'); |
xlsread | 讀取數值和文本數據(舊版本) | [num, txt] = xlsread('data.xlsx', 'Sheet1', 'A1:D10'); |
readmatrix | 讀取數值矩陣 | matrix = readmatrix('data.xlsx', 'Sheet', 'Sheet1', 'Range', 'A1:D10'); |
readcell | 讀取混合類型數據為單元格數組 | cell_data = readcell('data.xlsx', 'Sheet', 'Sheet1'); |
detectImportOptions | 檢測并自定義導入選項 | opts = detectImportOptions('data.xlsx'); opts.SelectedVariableNames = {'A', 'C'}; data = readtable('data.xlsx', opts); |
readtable 函數用于讀取 Excel 文件中的數據,并將其存儲在一個表格對象 excel_file 中。
filename {:, 1} 表示提取表格中第一列的數據,存儲在 x變量中。
filename {:, 2} 表示提取表格中第二列的數據,存儲在 y變量中。
plot(x,y, 'b') 用于繪制以 x為橫坐標,y為縱坐標的折線圖,其中 'b' 表示藍色線。
title、xlabel 和 ylabel 函數分別用于設置圖表的標題、橫坐標標簽和縱坐標標簽。
grid on 用于顯示網格線,使圖表更清晰
clc
clear
close all
% 交互式表格數據讀取與創建
input_folder = 'C:\Users\53609\Desktop\Test\20250507_Test_data\導出數據';
filename = fullfile(input_folder,'高斯函數據.xlsx');
% 檢查文件是否存在
if exist(filename, 'file')data = readtable(filename, 'ReadVariableNames', false); % 假設無表頭% 提取第一列數據first_column = data{:,1}; % 索引第一列% 提取第二列數據second_column = data{:, 2}; % 索引第二列disp('MATLAB導入完成')
end
x= first_column;
y = second_column;
figure;
plot(x, y, 'b', 'LineWidth', 2);
title(['高斯函數: \mu = ', num2str(mu), ', \sigma = ', num2str(sigma)]);
xlabel('x');
ylabel('f(x)');
grid on;
輸出結果