修改程序如下:
syms x n
N=128;
Fs=2000;
n=0:N-1;
x=cos(n);
X=abs(fft(x));
运行无错,出错主要是x没有数值。
matlab和labview分别可以实现这样的功能,matlab用函数实现,labview直接调用仿真信号VI设置成正弦信号实现。
matlab和labview的互联是通过控件的调用实现的,一般是在labview里调用matlab脚本,因为labview更容易做出强大的界面,matlab拥有强大的数据处理工具包。而且labview掉matlab脚本很简单,直接在labview中调用matlab脚本VI就可以直接编写matlab脚本了。反过来可以实现,但是很麻烦,而且没必要。
#include <msp430x44xh>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//串口初始化
FLL_CTL0 |= XCAP18PF; // Configure load caps
P2SEL |= 0x30; // P24,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL1; // UCLK = SMCLK
UBR00 = 0x36; // 1MHz 19200
UBR10 = 0x00; // 1MHz 19200
UMCTL0 = 0x6B; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
unsigned int adtable[256];
unsigned int i;
unsigned int AD_Times;
AD12Init();
ADC12CTL0 |= ENC ; //enable conversion
ADC12CTL0 |= ADC12SC; // Sampling open
while(1)
{
If (AD_Times==256)
{
for(i=0;i<256;i++)
{
TXBUF0 = adtable[i]; //Send by 2 Bytes
adtable[i]>>8;
TXBUF0 = adtable[i];
}
}
}
void AD12Init(void)
{
P6SEL |= 0x01; // P60 ADC option select
ADC12CTL0 &= ~ENC;
ADC12CTL0 = SHT0_6 + ADC12ON+MSC+REFON+REF2_5V; // set the register
ADC12CTL1 = SHP+CONSEQ_2; // Use sampling timer
ADC12MCTL0 = SREF_1+INCH_0
ADC12CTL0 |= ENC; // Conversion enabled
ADC12IE = 0x01; //interrupt
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12_ISR (void)
{
vu32 temp;
temp = ADC12MEM0;
adtable[AD_Times] = temp 2500/4095; // change to mv Value
AD_Times++;
if(AD_Times == 256)
{
ADC12CTL0 &= ~ENC;
ADC12CTL0 &= ~ADC12SC
}
应该是这个样子的,没调试过,有错误自己搞定吧
以上就是关于Matlab实验:正弦信号的频率估计。程序出错,跪求大神帮忙看一下。syms x n x=cos全部的内容,包括:Matlab实验:正弦信号的频率估计。程序出错,跪求大神帮忙看一下。syms x n x=cos、如何使用labview和matlab产生正弦信号、我想用单片机MSP430实现正弦信号采样,采集256个点。采集结果在串口中显示。怎么用程序实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)